// pages/bookingorder/bookingorder.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    show: false,
    arr:[],
    actions: [
      {name: '不限',value:'0',checked:99},
      {name: '商户总经理',value:'商户总经理',checked:1},
      {name: '市场经理',value:'市场经理',checked:2},
      {name: '财务经理',value:'财务经理',checked:3},
      {name: '后勤经理',value:'后勤经理',checked:4},
      {name: '市场专员',value:'市场专员',checked:5},
      {name: '合伙经理',value:'合伙经理',checked:6},
      {name: '合伙专员',value:'合伙专员',checked:7}
      // {name: '认证用户',value:'客户',checked:8},
      // {name: '游客散户',value:'游客',checked:9}
    ],
    act:[],
    list:[],
    transferList:[],
    showrole: false,
    role:'',
    options:[],
    usermeInfo:"",
    total_size:'',//用户总数
    roleMe:'',
    offset:0,
    nickArr:[],
    date:'不限'
  },
  Jdiction(){
    this.setData({ show: true });
  },
  search(e){ //电话号码
    let that = this;
    if(e.detail){
      if(/^[1][3,4,5,7,8,9][0-9]{9}$/.test(e.detail)){
        that.setData({ list:[],offset:0 })
        let data = {
          phone:e.detail,
          limit:10,
          offset:0
        }
        that.api(data)
      }else{
        var data = {
          nickname:e.detail,
          limit:10,
          offset:0
        }
        that.data.offset = 0
        // that.searchName(data)
        that.api(data)
      }
    }else{
      that.setData({ list:[],offset:0})
      let data = {
        limit:10,
        offset:0
      }
      that.api(data)
    }
  },
  searchName(data){
    let that = this;
    let role = that.data.role;
    app.ports.userSearch({data}).then((res) =>{
      var data = res.data.results;
      that.setData({ total_size : res.data.total_size })
      if (res.data.total_size > data.length) {
        for (var j = 0; j < data.length; j++) {
          that.data.list.push(data[j])
        }
        data = that.data.list
      }
      for(let i in data){//拿到用户权限字段，然后进行筛选判断输出权限名
        for(let j in role){
          if(data[i].active_role_id == role[j].id&&data[i].active_role_id!=null){
            data[i].roleTitle = role[j].title
          }else if(data[i].active_role_id==null){
            if(data[i].is_verified){
              data[i].roleTitle = '客户'
            }else{
              data[i].roleTitle = '游客'
            }
          }
        }
      }
      // console.log(data)
      let arrId = [];
      for(let i in data){arrId.push(data[i].id)} //拿到所有用户的id进行批量查询电话号码
      // console.log(arrId)
      app.ports.api38({data:arrId}).then((res) => {
        for(let index in res.data){ //判断id是否一致
          if(res.data[index].id==arrId[index]){//给data数据追加联系方式字段
            data[index].tel = res.data[index].phone 
          }
        }
        // console.log(data)
        this.setData({ list : data })
      }).catch(() => {console.error('获取所有用户联系电话错了！')});
      app.ports.api40({data:arrId}).then((res)=>{
        // console.log(res.data)
        let arrUrL = res.data;
        let resArray = [];
        for (let i in arrUrL){   resArray = resArray.concat(arrUrL[i]) }
        // console.log(resArray)
        app.ports.api43({data:resArray}).then((res)=>{ //把所有的推荐人id批量请求数据，返回成一个数组
          let nickArr = resArray;
          // console.log(res.data)
          for(let i in res.data){
            for(let j in nickArr){
              if(res.data[i].id == nickArr[j])
                nickArr[j] = {name:res.data[i].nickname,id:nickArr[j]}
             }
          }
          //把原本的推荐人路径，替换成姓名
          for(let i in arrUrL){
            for(let j in nickArr){
              for(let u =0;u<3;u++){
                if(arrUrL[i][u]==nickArr[j].id){
                  arrUrL[i][u] = nickArr[j].name;
                }
              }
            }
          }
          let completelist =  that.data.list ;
          for(let user in completelist){
            completelist[user].user = arrUrL[user]
          }
          that.setData({ list : completelist })
          // that.setData({ transferList : completelist })
          // console.log(completelist)

          // that.setData({ nickArr : nickArr })
        }).catch(()=>{console.error("通过路径获取用户信息！")})
      }).catch(()=>{ console.error("获取邀请路径报错了！")})
    })
  },
  searchInput(e){
    this.data.searchDetail = e.detail
  },
  onSelect(event) { //筛选
    let that = this;
    console.log(event.detail);
    that.setData({ list:[],offset:0 })
    if(event.detail.value == 0){
      let data = {
        limit:10,
        offset:0
      }
      that.api(data)
      that.setData({
        offset:0
      })
    }else if(event.detail.id){
      let data = {
        active_role_id:event.detail.id,
        limit:10,
        offset:0
      }
      that.api(data)
    }
    that.data.active_role_id = event.detail.id
    // else{
    //   // that.setData({ list : that.data.transferList })
    //   let liky = that.data.list.filter((p)=>{
    //     return p.roleTitle == event.detail.value
    //   })
    //   that.setData({ list : liky })
    //   // console.log(liky)
    // }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  load(){
    var that = this;
    app.ports.api41({}).then((res) => { //获取所有权限集合
      let role = res.data.results;
      let action = that.data.actions
      // console.log(role)
      for(let i in role){ //把id传进去
        for(let j in action){
          if(role[i].title == action[j].name){
            action[j].id = role[i].id
          }
        }
      }
      console.log(action, "===========")
      // var result = role.map((a)=>{return a['id'];}); //排序后，拿到所有id组成一个数组
      app.ports.api30({}).then((res)=>{  //拉取自身信息
        that.setData({usermeInfo : res.data })
        if(res.data.active_role_id == null){ //用户权限未激活时，弹出
          wx.showToast({
            title: '您没有激活权限！',
            icon: 'none',
            duration: 1500
          })
          return false
        }
        
        let liky = role.filter((p)=>{ //过滤出自己的权限
          return p.id == res.data.active_role_id
        })
        let code = liky[0].code
        let index = 0;//序列
        if(code == 'platform_admin'||code == 'renter_admin'||code == 'agence_admin'||code == 'super_admin'){
          index = 0
        }else if(code == 'renter_ceo'){//总经理
          index = 1
        }else if(code == 'renter_marketing_manager'){//市场经理
          index = 4
        }else if(code == 'renter_outsourcing_manager'){ //合伙经理
          index = 6
        }else{ index = 7 }
        let actionsNew = that.data.actions.filter((p)=>{
          return p.checked > index
        })
        that.setData({act:actionsNew,role:role})
        let data = {
          limit:10,
          offset:that.data.offset
        }
        that.api(data);
        // console.log(index)
      }).catch(()=>{console.error('权限管理页面拉取自身信息出错！')});
      that.userinfo();
    }).catch(() => {console.error('权限管理获取所有用户信息错了！')});
  },
  bindDateChange: function(e) {
    var data= {
      create_time__date:e.detail.value,
      limit: 10,
      offset: 0
    }
    this.setData({
      offset:0,
      list:[],
      date:e.detail.value
    })
    this.api(data)
  },
 async api(data){
    //过滤
    let that = this;
    let role = that.data.role;
    // TODO 整到这了   。。。。  这tm分页参数都不一样。。 闹腾
    // {page_token: data.offset, page_size: data.limit}
    data.page_token = data.offset;
    data.page_size = data.limit;
    console.log(data, "=====data");
  await app.ports.api42({data}).then(async (res) => { //获取所有用户集合
      let data = res.data.results;
      that.setData({ total_size : res.data.total })
      if (res.data.total > data.length) {
        for (var j = 0; j < data.length; j++) {
          that.data.list.push(data[j])
        }
        data = that.data.list
      }
      for(let i in data){//拿到用户权限字段，然后进行筛选判断输出权限名
        for(let j in role){
          if(data[i].active_role_id == role[j].id&&data[i].active_role_id!=null){
            data[i].roleTitle = role[j].title
          }else if(data[i].active_role_id==null){
            if(data[i].is_verified){
              data[i].roleTitle = '客户'
            }else{
              data[i].roleTitle = '游客'
            }
          }
        }
      }
      console.log(data, "=====user")
      // let arrId = [];
      // for(let i in data){arrId.push(data[i].id)} //拿到所有用户的id进行批量查询电话号码
      // // console.log(arrId)
      // app.ports.api38({data:arrId}).then((res) => {
      //   for(let index in res.data){ //判断id是否一致
      //     if(res.data[index].id==arrId[index]){//给data数据追加联系方式字段
      //       data[index].tel = res.data[index].phone 
      //     }
      //   }
      //   // console.log(data)
      //   this.setData({ list : data })
      // }).catch(() => {console.error('获取所有用户联系电话错了！')});

      // app.ports.api40({data:arrId}).then((res)=>{
      //   // console.log(res.data)
      //   let arrUrL = res.data;
      //   let resArray = [];
      //   for (let i in arrUrL){   resArray = resArray.concat(arrUrL[i]) }
      //   // console.log(resArray)
      //   app.ports.api43({data:resArray}).then((res)=>{ //把所有的推荐人id批量请求数据，返回成一个数组
      //     let nickArr = resArray;
      //     // console.log(res.data)
      //     for(let i in res.data){
      //       for(let j in nickArr){
      //         if(res.data[i].id == nickArr[j])
      //           nickArr[j] = {name:res.data[i].nickname,id:nickArr[j]}
      //        }
      //     }
      //     //把原本的推荐人路径，替换成姓名
      //     for(let i in arrUrL){
      //       for(let j in nickArr){
      //         for(let u =0;u<3;u++){
      //           if(arrUrL[i][u]==nickArr[j].id){
      //             arrUrL[i][u] = nickArr[j].name;
      //           }
      //         }
      //       }
      //     }
      //     let completelist =  that.data.list ;
      //     for(let user in completelist){
      //       completelist[user].user = arrUrL[user]
      //     }
      //     that.setData({ list : completelist })
      //     // that.setData({ transferList : completelist })
      //     // console.log(completelist)

      //     // that.setData({ nickArr : nickArr })
      //   }).catch(()=>{console.error("通过路径获取用户信息！")})
      // }).catch(()=>{ console.error("获取邀请路径报错了！")})

      that.setData({ list : data })
    }).catch(() => {console.error('获取所有用户信息错了！')});
  },
  onLoad: function (options) {
    this.load();
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */

  getUserInfo(event) {
    let that = this;
    let liky = that.data.options.filter((p)=>{
      return p.check == true 
    })
    let data = { role_pk : liky[0].id }
    app.ports.api52({data}).then((res)=>{
      wx.showToast({
        title: '权限变更成功',
        icon: 'none',
        duration: 1500
      })
      that.setData({ list:[],offset:0 })
      wx.setStorageSync('identity', that.data.roleMe);
      wx.setStorageSync('userId', that.data.usermeInfo.id);
      that.load();
    }).catch(()=>{console.error("激活角色失败！")})
  },
  onClose() { //关闭弹窗
    this.setData({ close: false });
    this.setData({ show: false });
  },
  roleBtn(){
    this.setData({ showrole : true })
  },
  onSwitch1Change(event) {
    let that = this;
    this.setData({ switch1: event.detail });
    // console.log(event.currentTarget.dataset)
    let value = event.currentTarget.dataset.id;
    that.data.options.filter((p)=>{
      if(p.id == value){
        p.check = true
      }else{
        p.check = false
      }
    })
    that.setData({ options : that.data.options })
  },
  userinfo(){ //拉取自身所有信息
    let that = this;
    app.ports.api30({}).then((res)=>{
      // console.log(res.data)
      that.setData({ roleMe : res.data.active_role.title })

      that.setData({ options : res.data.granted_role_set }) //进行匹配选中
      that.data.options.filter((p)=>{
        if(p.id == res.data.active_role_id){
          p.check = true
        }else{ p.check = false }
      })
      that.setData({ options : that.data.options })
      res.data.granted_role_set.filter((p)=>{
        if(p.id == res.data.active_role_id){
          that.setData({ roleMe : p.title })
          wx.setStorageSync('identity',p.title)
        }
      })
    }).catch(()=>{console.error("获取自身信息失败！")})
  }, 
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    let that = this ;
    wx.showNavigationBarLoading() //在标题栏中显示加载
      setTimeout(function(){
        wx.hideNavigationBarLoading() //完成停止加载
        that.setData({ list:[],value:'',offset:0 ,searchDetail:''})
        that.onLoad()
        wx.stopPullDownRefresh() //停止下拉刷新
      },1500);
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    let that = this;
    let total_size = that.data.total_size;
    let size = that.data.list.length;
    if(total_size > size){
      let offset = that.data.offset+=1;
      let data = {
        limit:10,
        offset:offset
      }
      if(that.data.date && that.data.date != '不限') data.create_time__date = that.data.date
      if(that.data.searchDetail){
        data.query = that.data.searchDetail
        console.log('上拉')
        console.log(offset)
        that.searchName(data)
      }else{
          if(that.data.active_role_id) data.active_role_id = that.data.active_role_id
          that.api(data)
      }
    }
   
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})

// let userRoleid = res.data.active_role_id; //获取自身权限
// let roleIndex = result.indexOf(userRoleid);//获取当前权限在权限列表的位置
// //判断主管、经理互不查看操作
// if(res.data.active_role.code == "renter_finance_leader"||res.data.active_role.code == "renter_finance_manager"){ //财务部门主管、经理
//   var newRoleArr = role.slice(roleIndex+3);
// }else if(res.data.active_role.code == "renter_marketing_leader"||res.data.active_role.code == "renter_marketing_manager"){ //市场部门主管、经理
//   var newRoleArr = role.slice(roleIndex+2);
// }else{ //当为后勤主管、其他时，默认从下一个截取
//   var newRoleArr = role.slice(roleIndex+1); //进行截取  当前用户所能看到的权限列表
// }



      // let order = [ //权限排序规则
      //   "super_admin","platform_admin", // 超级管理员、平台管理员
      //   "agence_admin","renter_admin","renter_ceo", //代理公司管理员、商户管理员、商户总经理
      //   "renter_finance_leader","renter_marketing_leader","renter_logistics_leader", //财务部门主管、市场部门主管、后勤部门主管
      //   "renter_finance_manager","renter_marketing_manager","renter_logistics_manager", //财务经理、市场经理、后勤经理
      //   "renter_outsourcing_manager","renter_outsourcing_staff", //合伙人管理、合伙专员
      //   "renter_finance_sfaff",'renter_marketing_staff',"renter_logistics_staff"  //财务专员、市场专员、后勤专员
      // ];
      // role.sort((a,b)=>{return order.indexOf(a.code)-order.indexOf(b.code)}) //按照规则排序


      
        // let userRoleid = res.data.active_role_id; //获取自身权限
        // let roleIndex = result.indexOf(userRoleid);//获取当前权限在权限列表的位置
        // var newRoleArr = role.slice(roleIndex+1); //进行截取  当前用户所能看到的权限列表

        
          // for(let i in data){//根据自己权限，屏蔽掉比自己权限高的人员
          //   for(let j in newRoleArr){
          //     var lily = data.filter((p)=>{ return p.active_role_id==newRoleArr[j].id });
          //     for(var h=0;h<lily.length;h++){v[h] = lily[h] }
          //   }
          //   if(!data[i].active_role_id){  v.push(data[i])  } //当权限为空时，把用户push到数组中，可以查看并取查取信息
          // }